In electronic printing, image data is fed to the printer, for example from a scanner which scans an original of the image to be printed, or from a suitable image creation and/or image processing computer program. As used herein, the term “printer” includes not only devices for printing artificially created images, but also devices for printing copies of an original, otherwise known as copiers.
Most electronic printers are designed to print image data pixel-by-pixel and line-by-line at a more or less constant speed, irrespective of the nature of the image. Therefore, the printing station of the printer must receive image data at said more or less constant speed, as defined in terms of pixels per second. However, said image data can contain elements of various different types, for example artificially created text and graphics, hereinafter named line work data as well as halftone presentations of continuous tone images, hereinafter named raster images. Consequently, the amount of data required for printing each line of the final image will vary depending upon the nature of the image. Usually a block of data, representing for example a whole page of printed images, is received and stored in an intermediate buffer before printing begins, so that the data may be released from the buffer at the speed required by the printing station.
In order to store as much data as possible, and in order to keep the bandwidth and capacity requirements of the image data storage and processing equipment to a minimum, it is known to compress the data while or after it is being generated. Various compression regimes have been described in the art and some are widely used. Many of such general purpose compression methods, such as LZW or arithmetic encoding, are known to losslessly compress arbitrary data in a very efficient way, i.e. achieving very high compression ratios, but are in general complex and thus expensive to implement. Also, such general-purpose compression techniques work on one-dimensional data streams and do not take advantage of certain correlations that typically exist between pixels in two-dimensional images. Other well-known compression methods, such as JPEG, are specifically targeted to efficiently compress image data but said compression methods typically are lossy, i.e. certain information is lost during the compression stage.
Lossy compression is, to a certain extent, acceptable when being applied to image data in electronic printing. This is especially true for raster images because the information that is lost may have been difficult to be seen by the human eye anyway, for example because it was of a too high spatial frequency. Lossy compression, e.g. as implemented by the JPEG method, is however often unacceptable when being applied to line work elements in electronic printing.
A known method to overcome the above dilemma consists of separating the line work elements of the image data from the raster images, and compressing each of said elements using a different method, e.g. lossless LZW for line work elements and lossy JPEG for raster images.
It is well known that state-of-the-art lossless compression methods result in compression ratios that are dependent on the actual data on which they are applied. Thus, while such methods may on average result in high compression ratios, the worst case compression efficiency may be very low. With worst case compression is meant: the compression factor of the band that compresses worst, where a band is a set of N lines out of the image, N being the block's dimension. As a matter of fact, the worst case compression factor may even be smaller than 1:1, meaning that the compressed information is less compact than the respective uncompressed information. Storing, handling and decompressing such image data at constant speeds, as is required in electronic printing, thus requires over-dimensioned controllers.
In a sheet fed printer, sometimes the use of such over-dimensioned controllers can be avoided by delaying the feeding of each sheet of receiving material through the printing station until all necessary image processing steps are completed. Particularly, in the event that an image of unusual content, which requires additional processing time, is offered to the printer, the printer control system is able to delay the sheet feed mechanism for the required period. Because of the known maximum size of the sheets in a sheet fed printer, a intermediate buffer can be provided to temporarily store a full sheet's image data until all of it is has been pre-processed. This is however an inefficient way of solving the problem which reduces the overall speed of the printer. However, when the page's image data is not fully buffered, or when there is a desire to reduce the time and thus the spaces between consecutively printed pages, in other words print in a more efficient way, over-dimensioned controllers are a prerequisite to be able to use state-of-the-art compression methods.
In a web fed printer, delaying the feeding of sheets is not possible. In such a printer, the web of receiving material is usually fed through the printing station continuously at a substantially constant speed. The image data, no matter how complex its content, thus needs to be supplied to the printer also continuously, i.e. page after page, and at a substantially constant speed. Also, web fed printers may have the capability to print pages of almost unlimited length so that one can hardly dimension a buffer to temporarily buffer a page's image data while it is being processed. Thus, while some state-of-the-art compression regimes are able to produce significant compression ratios on average, their worst case performance can be so poor that there is insufficient time to process the image before it is required by the printing station. As a result, web-fed printers have to be provided with expensive over-dimensioned controllers.
We are aware that data compression is used in television systems, such as is described in British patent application GB 2251528A (British Broadcasting Corporation) which describes a digitally assisted HD-MAC system in which blocks of pixels are encoded by methods such as a Peano scan with run-length encoding or using a Huffman code.